/**
 * @Author: 抱著羊啃 1437670973@qq.com
 * @Date: 2025-01-XX
 * @Description: 小说阅读页面JavaScript功能 - 处理阅读记录和阅读器功能
 */

// 全局变量
let currentFontSize = 'medium';
let isNightMode = false;
let isInBookshelf = false;

// 页面加载完成后执行
$(document).ready(function() {
    // 获取URL参数
    const urlParams = new URLSearchParams(window.location.search);
    const novelId = urlParams.get('novelId');
    const chapterId = urlParams.get('chapterId');
    
    // 如果有必要的参数，记录访问
    if (novelId && chapterId) {
        recordVisit(novelId, chapterId);
    }
    
    // 监听页面可见性变化，当用户切换回页面时也记录访问
    document.addEventListener('visibilitychange', function() {
        if (!document.hidden && novelId && chapterId) {
            recordVisit(novelId, chapterId);
        }
    });
    
    // 初始化阅读器设置
    initReaderSettings();
    
    // 检查书架状态
    if (novelId) {
        checkBookshelfStatus(novelId);
    }
    
    // 绑定遮罩层点击事件
    $('#overlay').click(function() {
        closeCatalog();
    });
});

/**
 * 记录用户访问章节的记录
 * @param {string} novelId - 小说ID
 * @param {string} chapterId - 章节ID
 */
function recordVisit(novelId, chapterId) {
    $.ajax({
        url: '/demo1_war_exploded/API/VisitRecord',
        type: 'POST',
        contentType: 'application/json;charset=UTF-8',
        data: JSON.stringify({
            novelId: parseInt(novelId),
            chapterId: parseInt(chapterId)
        }),
        success: function(response) {
            console.log('访问记录已保存:', response);
        },
        error: function(xhr, status, error) {
            console.error('保存访问记录失败:', error);
            // 不显示错误给用户，静默处理
        }
    });
}

/**
 * 获取用户的阅读历史记录
 * @param {number} novelId - 小说ID
 * @param {function} callback - 回调函数
 */
function getReadingHistory(novelId, callback) {
    $.ajax({
        url: '/demo1_war_exploded/API/VisitRecord?novelId=' + novelId,
        type: 'GET',
        dataType: 'json',
        success: function(response) {
            if (response.code === 200) {
                callback(response.data);
            } else {
                console.error('获取阅读历史失败:', response.msg);
                callback([]);
            }
        },
        error: function(xhr, status, error) {
            console.error('获取阅读历史失败:', error);
            callback([]);
        }
    });
}

/**
 * 标记章节为已读
 * @param {number} chapterId - 章节ID
 */
function markChapterAsRead(chapterId) {
    // 可以在这里添加视觉标记，比如改变章节链接的颜色
    const chapterLinks = document.querySelectorAll(`a[href*="chapterId=${chapterId}"]`);
    chapterLinks.forEach(link => {
        link.classList.add('read-chapter');
    });
}

/**
 * 自动保存阅读进度（定时器）
 */
function startReadingProgressTimer() {
    const urlParams = new URLSearchParams(window.location.search);
    const novelId = urlParams.get('novelId');
    const chapterId = urlParams.get('chapterId');
    
    if (novelId && chapterId) {
        // 每30秒记录一次访问（表示用户还在阅读）
        setInterval(function() {
            if (!document.hidden) { // 只在页面可见时记录
                recordVisit(novelId, chapterId);
            }
        }, 30000); // 30秒
    }
}

/**
 * 初始化阅读器设置
 */
function initReaderSettings() {
    // 从localStorage读取设置
    const savedFontSize = localStorage.getItem('readerFontSize') || 'medium';
    const savedNightMode = localStorage.getItem('readerNightMode') === 'true';
    
    // 应用设置
    setFontSize(savedFontSize);
    if (savedNightMode) {
        enableNightMode();
    }
}

/**
 * 切换书架状态
 */
function toggleBookshelf() {
    // 优先使用window.readerData，如果不存在则从URL获取
    let novelId = window.readerData && window.readerData.novelId ? window.readerData.novelId : null;
    
    if (!novelId) {
        const urlParams = new URLSearchParams(window.location.search);
        novelId = urlParams.get('novelId');
    }
    
    if (!novelId) {
        alert('无法获取小说ID，请刷新页面重试');
        return;
    }
    
    const action = isInBookshelf ? 'remove' : 'add';
    
    $.ajax({
        url: '/demo1_war_exploded/API/Bookshelf',
        type: 'POST',
        data: {
            novelId: novelId,
            action: action
        },
        success: function(response) {
            if (response.code === 200) {
                isInBookshelf = !isInBookshelf;
                updateBookshelfButton();
                showToast(action === 'add' ? '已添加到书架' : '已从书架移除');
            } else {
                alert('操作失败: ' + response.msg);
            }
        },
        error: function(xhr, status, error) {
            console.error('书架操作失败:', error);
            alert('操作失败，请稍后重试');
        }
    });
}

/**
 * 检查书架状态
 */
function checkBookshelfStatus(novelId) {
    // 如果没有传入novelId，尝试从多个来源获取
    if (!novelId) {
        novelId = window.readerData && window.readerData.novelId ? window.readerData.novelId : null;
        if (!novelId) {
            const urlParams = new URLSearchParams(window.location.search);
            novelId = urlParams.get('novelId');
        }
    }
    
    if (!novelId) {
        console.error('无法获取小说ID');
        return;
    }
    
    $.ajax({
        url: '/demo1_war_exploded/API/Bookshelf/check/' + novelId,
        type: 'GET',
        success: function(response) {
            if (response.code === 200) {
                isInBookshelf = response.collected;
                updateBookshelfButton();
            }
        },
        error: function(xhr, status, error) {
            console.error('检查书架状态失败:', error);
        }
    });
}

/**
 * 更新书架按钮状态
 */
function updateBookshelfButton() {
    const btn = $('#bookshelfBtn');
    if (isInBookshelf) {
        btn.addClass('active');
        btn.find('span').text('已收藏');
        btn.find('i').removeClass('far').addClass('fas'); // 实心图标
    } else {
        btn.removeClass('active');
        btn.find('span').text('加书架');
        btn.find('i').removeClass('fas').addClass('far'); // 空心图标
    }
}

/**
 * 切换目录显示
 */
function toggleCatalog() {
    const sidebar = $('#catalogSidebar');
    const overlay = $('#overlay');
    
    if (sidebar.hasClass('show')) {
        closeCatalog();
    } else {
        sidebar.addClass('show');
        overlay.addClass('show');
    }
}

/**
 * 关闭目录
 */
function closeCatalog() {
    $('#catalogSidebar').removeClass('show');
    $('#overlay').removeClass('show');
}

/**
 * 跳转到指定章节
 */
function goToChapter(novelId, chapterId) {
    window.location.href = `reader.jsp?novelId=${novelId}&chapterId=${chapterId}`;
}

/**
 * 切换夜间模式
 */
function toggleNightMode() {
    if (isNightMode) {
        disableNightMode();
    } else {
        enableNightMode();
    }
}

/**
 * 启用夜间模式
 */
function enableNightMode() {
    $('body').addClass('night-mode');
    $('#nightModeBtn').addClass('active');
    $('#nightModeBtn span').text('日间');
    isNightMode = true;
    localStorage.setItem('readerNightMode', 'true');
}

/**
 * 禁用夜间模式
 */
function disableNightMode() {
    $('body').removeClass('night-mode');
    $('#nightModeBtn').removeClass('active');
    $('#nightModeBtn span').text('夜间');
    isNightMode = false;
    localStorage.setItem('readerNightMode', 'false');
}

/**
 * 调整字号
 */
function adjustFontSize() {
    const sizes = ['small', 'medium', 'large', 'xlarge'];
    const currentIndex = sizes.indexOf(currentFontSize);
    const nextIndex = (currentIndex + 1) % sizes.length;
    const nextSize = sizes[nextIndex];
    
    setFontSize(nextSize);
}

/**
 * 设置字号
 */
function setFontSize(size) {
    const content = $('#chapterContent');
    
    // 移除所有字号类
    content.removeClass('font-size-small font-size-medium font-size-large font-size-xlarge');
    
    // 添加新的字号类
    content.addClass('font-size-' + size);
    
    currentFontSize = size;
    localStorage.setItem('readerFontSize', size);
}

// 启动阅读进度定时器
startReadingProgressTimer();

/**
 * 下载当前章节
 */
function downloadChapter() {
    const novelName = window.readerData.novelName;
    const chapterTitle = document.querySelector('.chapter-title').textContent;
    const chapterContent = document.querySelector('.chapter-content .content').textContent;
    
    // 创建下载内容
    const content = `${novelName}\n${chapterTitle}\n\n${chapterContent}`;
    
    // 创建Blob对象
    const blob = new Blob([content], { type: 'text/plain;charset=utf-8' });
    
    // 创建下载链接
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = `${novelName}-${chapterTitle}.txt`;
    
    // 触发下载
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    
    // 释放URL对象
    window.URL.revokeObjectURL(url);
    
    // 显示下载成功提示
    showToast('章节下载成功！');
}

/**
 * 显示提示消息
 */
function showToast(message) {
    // 创建提示元素
    const toast = $(`
        <div class="toast-message" style="
            position: fixed;
            top: 20px;
            right: 20px;
            background: #28a745;
            color: white;
            padding: 12px 20px;
            border-radius: 5px;
            z-index: 9999;
            box-shadow: 0 2px 10px rgba(0,0,0,0.2);
        ">${message}</div>
    `);
    
    // 添加到页面
    $('body').append(toast);
    
    // 3秒后自动移除
    setTimeout(() => {
        toast.fadeOut(300, function() {
            $(this).remove();
        });
    }, 3000);
}